<?php
    class Validate{

        //正则表达式验证
        public function regular($field,$value){
            $reg=array(
                'number'=>"/^\+?[1-9][0-9]*$/",
                'page'=>"/^\+?[0-9][0-9]*$/",
                'chinese'=>'~[\x{4e00}-\x{9fa5}]+~u',
                'id'=>"/^\+?[1-9][0-9]*$/",
                'student_id'=>"/^\+?[1-9][0-9]*$/",
                'name'=>"/^[\x{4e00}-\x{9fa5}]+$/u",
                'height'=>"/^\+?[1-9][0-9]*$/",
                'floor'=>"/^\+?[1-9][0-9]*$/",
                'rooms'=>"/^\+?[1-9][0-9]{0,2}$/",
                'beds'=>"/^\+?[1-9][0-9]*$/",
                'property'=>"/^\+?[1-3]*$/",
                'gender'=>"/^\+?[1-3]*$/",
                'status'=>"/^\+?[0-3]*$/",
                'major'=>"/^\+?[1-9][0-9]*$/",
                'grade'=>"/^\+?[1-9][0-9]*$/",
                'uid'=>"/^\+?[1-9][0-9]{5,17}$/i",
                //'uid'=>"/^[a-z\1-9]\w{5,17}$/i",
                'password'=>"/^\w{6,16}$/",
                'phone'=>"/^1[34578]\d{9}$/"
            );
            $lenght_str=array(
                'remarks'=>30,
                'abbreviation'=>10,
                'name'=>8,
                'class'=>8
            );
            $flag=false;

            //判断字段名是否在reg中
            if(array_key_exists($field,$reg)){
                if(preg_match($reg[$field],$value)){
                    if($field=="name"){
                        if($this->utf8_strlen($value)<$lenght_str[$field]){
                            $flag=true;
                        }else{
                            $flag=false;
                        }
                        
                    }else{
                        $flag=true;
                    }
                }
            }else if(array_key_exists($field,$lenght_str)){
                if($this->utf8_strlen($value)<$lenght_str[$field]){
                    $flag=true;
                }
            }
            
            return $flag;
        }
        // 计算中文字符串长度
        function utf8_strlen($string = null) {
            // 将字符串分解为单元
            preg_match_all("/./us", $string, $match);
            // 返回单元个数
            return count($match[0]);
        }
    }
?>